package one.saunfa.saunfa.suzhu;

/**
 * @author wang fei
 * @date 2020-10-12 14:23
 */
public class MyArray {

    //定义一个数组
    private int [] intArrays;

    //定义数组实际有效长度
    private int elements;

    //定义数组最大长度
    private int length;

    //构造一个长度为50的数组
    public MyArray(){
        elements = 0;
        length = 50;
        intArrays = new int[length];
    }

    //构造函数，初始化一个默认长度为length的数组
    public MyArray(int length){
        elements = 0;
        this.length = length;
        intArrays = new int[length];
    }

    //获取数组的有效长度
    public int getSize(){
        return elements;
    }

    //遍历显示元素
    public void display(){
        for(int i = 0; i < elements; i++){
            System.out.println(intArrays[i] + "");
        }
        System.out.println();
    }

    /**
     * 添加元素
     * @param value 假设操作人是不会添加重复元素的，如果有重复元素对于后面的操作都会有影响。
     * @return 添加成功返回true,添加的元素超过范围了返回false
     */
    public boolean add(int value){
        if(elements == length){
            return false;
        }else{
            intArrays[elements] = value;
            elements++;
        }
        return true;
    }

    /**
     * 根据下标获取元素
     */
    public int get(int i){
        if(i < 0 | i > elements){
            System.out.println("数组越界");
        }
        return intArrays[i];
    }

    /**
     * 查找元素
     * 查找的值如果存在，返回下标值，返回返回-1
     */
    public int find(int searchValue){
        int i;
        for(i = 0; i < elements; i++){
            if(intArrays[i] == searchValue){
                break;
            }
        }
        if(i == elements){
            return -1;
        }
       return  i;
    }

    /**
     *删除元素
     */
    public boolean delete(int value){
        int k = find(value);
        //值不存在返回false
        if(k == -1){
            System.out.println("删除Error");
            return false;
        }else{
            if(k == elements - 1){
                elements--;
            }else{
                for(int i = k; i < elements - 1; i++){
                    intArrays[i] = intArrays[i+1];
                }
                elements--;
            }
            System.out.println("删除Success");
            return true;
        }
    }

    /**
     * 修改数据
     */
    public boolean modify(int oldValue,int newValue){
        //查找旧值的下标
        int i = find(oldValue);
        if(i == -1){
            System.out.println("需要修改的数据不存在!!!");
            return false;
        }else{
            intArrays[i] = newValue;
            return true;
        }
    }

}
